📘 NVSHMEM 原子操作
细粒度同步
30 章完整目录
01
NVSHMEM 概述
什么是 NVSHMEM
与 CUDA 关系
与 MPI 对比
编程模型简介
02
NVSHMEM 环境搭建
硬件要求
NVLink/NVSwitch
软件栈
编译运行第一个程序
03
对称内存与 PE 概念
对称内存定义
PE 概念
my_pe / n_pes
04
NVSHMEM 初始化与退出
nvshmem_init
nvshmem_finalize
nvshmalloc / nvshfree
05
点对点通信基础
nvshmem_put / get
阻塞与非阻塞
简单数据传输
06
集合通信操作
barrier
broadcast
collect
reduce
07
原子操作概述
必要性
支持类型
atomic add/swap/CAS
08
原子加法 (Atomic Add)
nvshmem_atomic_add
对称内存累加
多 PE 示例
09
原子交换 (Atomic Swap)
nvshmem_atomic_swap
分布式锁思路
10
原子比较-交换 (CAS)
nvshmem_atomic_compare_swap
无锁数据结构基础
11
原子 Fetch 操作
fetch_add / fetch_swap
返回值技巧
12
原子操作的内存模型
内存一致性
排序保证
与 CUDA 对比
13
细粒度同步概念
为什么需要
粗粒度局限性
应用场景
14
信号量 (Semaphore)
NVSHMEM 实现
基于原子操作
生产者-消费者
15
锁 (Lock) 机制
分布式自旋锁
原子 CAS 实现
公平性与性能
16
栅栏 (Fence) 与排序
nvshmem_fence
写后读排序
与 cudaDeviceSync
17
等待 (Wait) 操作
nvshmem_wait_until
条件等待/忙等待
细粒度事件通知
18
基于原子操作的工作队列
工作窃取
任务分配
负载均衡
19
计数器 (Counter) 与归约
分布式计数器
原子+归约
全局统计
20
生产者-消费者模式
多生产者/消费者
环形缓冲区
NVSHMEM 实现
21
流水线 (Pipeline) 同步
阶段间原子操作
细粒度依赖
流水线并行
22
树形同步 (Tree Barrier)
自定义 Barrier
树形实现
性能对比
23
无锁数据结构
无锁栈
无锁队列
原子 CAS 实现
24
性能优化技巧
减少原子冲突
内存对齐/缓存行
NVLink 加速
25
调试与验证
调试方法
死锁/数据竞争
cuda-gdb 工具
26
与 CUDA 内核的交互
内核中调用原子操作
全局/对称内存协同
混合编程
27
多节点扩展
多 GPU 节点
跨节点原子操作
InfiniBand+NVLink
28
实际案例:分布式图计算
图遍历原子操作
顶点度统计
PageRank 细粒度同步
29
实际案例:分布式深度学习同步
梯度累积原子操作
AllReduce 细粒度优化
异步 SGD
30
总结与展望
最佳实践
NVSHMEM 2.0 / CXL
学习资源